package org.example.mouse;

import com.sun.jna.Library;
import com.sun.jna.Native;

public class GHubController2 {
    static GHubLibrary gm;
    // 定义与DLL的接口
    public interface GHubLibrary extends Library {
        GHubLibrary INSTANCE = Native.load("./Ghub64.dll", GHubLibrary.class);

        boolean INIT();
        void FREE(int button);
        void MoveR(int x, int y);
    }

    private static boolean gmok = false;

    static {
        try {
            gm = GHubLibrary.INSTANCE;
            if (!gm.INIT()) {
                System.out.println("未安装ghub或者lgs驱动!!!");
            } else {
                System.out.println("初始化成功!");
            }
        } catch (UnsatisfiedLinkError e) {
            System.out.println("缺少文件或无法加载库: " + e.getMessage());
        }
    }

//    // 按下鼠标按键
//    public static void pressMouseButton(int button) {
//        if (gmok) {
//            GHubLibrary.INSTANCE.mouse_down(button);
//        }
//    }
//
//    // 松开鼠标按键
//    public static void releaseMouseButton(int button) {
//        if (gmok) {
//            GHubLibrary.INSTANCE.mouse_up(button);
//        }
//    }
//
//    // 点击鼠标
//    public static void clickMouseButton(int button) {
//        pressMouseButton(button);
//        releaseMouseButton(button);
//    }
//
//    // 按下键盘按键
//    public static void pressKey(int code) {
//        if (gmok) {
//            GHubLibrary.INSTANCE.key_down(code);
//        }
//    }
//
//    // 松开键盘按键
//    public static void releaseKey(int code) {
//        if (gmok) {
//            GHubLibrary.INSTANCE.key_up(code);
//        }
//    }
//
//    // 点击键盘按键
//    public static void clickKey(int code) {
//        pressKey(code);
//        releaseKey(code);
//    }
//
//    // 鼠标移动
//    public static void mouseXY(int x, int y, boolean absMove) {
//        if (gmok) {
//            GHubLibrary.INSTANCE.moveR(x, y, absMove);
//        }
//    }

    // 重载方法，absMove默认为false
    public static void mouseXY(int x, int y) {
        gm.MoveR(x,y);
    }

    public static void main(String[] args) throws InterruptedException {
        // 使用示例
        if (gmok) {
            while (true) {
                mouseXY(100, 100);   // 相对移动
                Thread.sleep(2000L);
            }
        }
    }
}